服务端修改客户端界面
文档待整理。本文所述可能已不是最佳实践
可以利用[绑定]来修改客户端界面。
以下代码在[界面]中执行
local bag = base.ui.panel {
layout = {
width = 100,
height = 100,
},
bind = {
layout = {
width = 'width',
},
},
image = '背包.png',
}
local ui, bind = base.ui.create(bag, '背包')
以下代码在[服务器]中执行,假定对应的玩家为
player
local bind = base.ui.bind(player, '背包')
bind.width = 600 -- 将背包的宽度修改为600
需要注意的是,服务器使用的bind
是只写的,你无法从里面读取出正确的数据。此外你每次修改数据都会产生网络流量,请谨慎使用。
array被绑定的话,必须给array指定个初始值,否则不知道是阵列
另外,array必须先改大,才能改里面的具体元素
要读取数据,得由客户端使用自定义消息来发送数据。换句话说,数据绑定是单向的,总是从服务器到客户端(当然,也可以客户端本地绑定)
除了修改数据,你也可以利用它来注册控件事件:
以下代码在[界面]中执行
local button = base.ui.button {
layout = {
width = 100,
height = 100,
},
bind = {
event = {
on_click = 'on_click',
},
},
image = '按钮.png',
}
local ui, bind = base.ui.create(button, '按钮')
以下代码在[服务器]中执行
local bind = base.ui.bind(player, '按钮')
bind.on_click = function ()
print '按钮被点击'
end
和修改属性类似,当你注册事件后每次控件触发此事件时都会产生网络流量,请谨慎使用。
bind
创建绑定
- 参数
- player (player) - 玩家
- name (string) - 绑定名
- 返回
- bind (bind) - 绑定
绑定名指的是界面[创建控件]时制定的名字。
local bind = base.ui.bind(player, '背包')